home *** CD-ROM | disk | FTP | other *** search
/ Dynamic HTML Construction Kit / Dynamic HTML Construction Kit.iso / earthlink / nscomm / java40.jar / java / lang / StringBuffer.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-11-03  |  3.5 KB  |  256 lines

  1. package java.lang;
  2.  
  3. import java.io.Serializable;
  4.  
  5. public final class StringBuffer implements Serializable {
  6.    private char[] value;
  7.    private int count;
  8.    private boolean shared;
  9.    static final long serialVersionUID = 3388685877147921107L;
  10.  
  11.    public StringBuffer() {
  12.       this(16);
  13.    }
  14.  
  15.    public StringBuffer(int var1) {
  16.       this.value = new char[var1];
  17.       this.shared = false;
  18.    }
  19.  
  20.    public StringBuffer(String var1) {
  21.       this(var1.length() + 16);
  22.       this.append(var1);
  23.    }
  24.  
  25.    public int length() {
  26.       return this.count;
  27.    }
  28.  
  29.    public int capacity() {
  30.       return this.value.length;
  31.    }
  32.  
  33.    private final void copyWhenShared() {
  34.       if (this.shared) {
  35.          char[] var1 = new char[this.value.length];
  36.          System.arraycopy(this.value, 0, var1, 0, this.count);
  37.          this.value = var1;
  38.          this.shared = false;
  39.       }
  40.  
  41.    }
  42.  
  43.    public synchronized void ensureCapacity(int var1) {
  44.       int var2 = this.value.length;
  45.       if (var1 > var2) {
  46.          int var3 = (var2 + 1) * 2;
  47.          if (var1 > var3) {
  48.             var3 = var1;
  49.          }
  50.  
  51.          char[] var4 = new char[var3];
  52.          System.arraycopy(this.value, 0, var4, 0, this.count);
  53.          this.value = var4;
  54.          this.shared = false;
  55.       }
  56.  
  57.    }
  58.  
  59.    public synchronized void setLength(int var1) {
  60.       if (var1 < 0) {
  61.          throw new StringIndexOutOfBoundsException(var1);
  62.       } else {
  63.          this.ensureCapacity(var1);
  64.          if (this.count < var1) {
  65.             this.copyWhenShared();
  66.  
  67.             while(this.count < var1) {
  68.                this.value[this.count] = 0;
  69.                ++this.count;
  70.             }
  71.          }
  72.  
  73.          this.count = var1;
  74.       }
  75.    }
  76.  
  77.    public synchronized char charAt(int var1) {
  78.       if (var1 >= 0 && var1 < this.count) {
  79.          return this.value[var1];
  80.       } else {
  81.          throw new StringIndexOutOfBoundsException(var1);
  82.       }
  83.    }
  84.  
  85.    public synchronized void getChars(int var1, int var2, char[] var3, int var4) {
  86.       if (var1 >= 0 && var1 < this.count) {
  87.          if (var2 >= 0 && var2 <= this.count) {
  88.             if (var1 < var2) {
  89.                System.arraycopy(this.value, var1, var3, var4, var2 - var1);
  90.             }
  91.  
  92.          } else {
  93.             throw new StringIndexOutOfBoundsException(var2);
  94.          }
  95.       } else {
  96.          throw new StringIndexOutOfBoundsException(var1);
  97.       }
  98.    }
  99.  
  100.    public synchronized void setCharAt(int var1, char var2) {
  101.       if (var1 >= 0 && var1 < this.count) {
  102.          this.copyWhenShared();
  103.          this.value[var1] = var2;
  104.       } else {
  105.          throw new StringIndexOutOfBoundsException(var1);
  106.       }
  107.    }
  108.  
  109.    public synchronized StringBuffer append(Object var1) {
  110.       return this.append(String.valueOf(var1));
  111.    }
  112.  
  113.    public synchronized StringBuffer append(String var1) {
  114.       if (var1 == null) {
  115.          var1 = String.valueOf(var1);
  116.       }
  117.  
  118.       int var2 = var1.length();
  119.       this.ensureCapacity(this.count + var2);
  120.       this.copyWhenShared();
  121.       var1.getChars(0, var2, this.value, this.count);
  122.       this.count += var2;
  123.       return this;
  124.    }
  125.  
  126.    public synchronized StringBuffer append(char[] var1) {
  127.       int var2 = var1.length;
  128.       this.ensureCapacity(this.count + var2);
  129.       this.copyWhenShared();
  130.       System.arraycopy(var1, 0, this.value, this.count, var2);
  131.       this.count += var2;
  132.       return this;
  133.    }
  134.  
  135.    public synchronized StringBuffer append(char[] var1, int var2, int var3) {
  136.       this.ensureCapacity(this.count + var3);
  137.       this.copyWhenShared();
  138.       System.arraycopy(var1, var2, this.value, this.count, var3);
  139.       this.count += var3;
  140.       return this;
  141.    }
  142.  
  143.    public StringBuffer append(boolean var1) {
  144.       return this.append(String.valueOf(var1));
  145.    }
  146.  
  147.    public synchronized StringBuffer append(char var1) {
  148.       this.ensureCapacity(this.count + 1);
  149.       this.copyWhenShared();
  150.       this.value[this.count++] = var1;
  151.       return this;
  152.    }
  153.  
  154.    public StringBuffer append(int var1) {
  155.       return this.append(String.valueOf(var1));
  156.    }
  157.  
  158.    public StringBuffer append(long var1) {
  159.       return this.append(String.valueOf(var1));
  160.    }
  161.  
  162.    public StringBuffer append(float var1) {
  163.       return this.append(String.valueOf(var1));
  164.    }
  165.  
  166.    public StringBuffer append(double var1) {
  167.       return this.append(String.valueOf(var1));
  168.    }
  169.  
  170.    public synchronized StringBuffer insert(int var1, Object var2) {
  171.       return this.insert(var1, String.valueOf(var2));
  172.    }
  173.  
  174.    public synchronized StringBuffer insert(int var1, String var2) {
  175.       if (var1 >= 0 && var1 <= this.count) {
  176.          int var3 = var2.length();
  177.          this.ensureCapacity(this.count + var3);
  178.          this.copyWhenShared();
  179.          System.arraycopy(this.value, var1, this.value, var1 + var3, this.count - var1);
  180.          var2.getChars(0, var3, this.value, var1);
  181.          this.count += var3;
  182.          return this;
  183.       } else {
  184.          throw new StringIndexOutOfBoundsException();
  185.       }
  186.    }
  187.  
  188.    public synchronized StringBuffer insert(int var1, char[] var2) {
  189.       if (var1 >= 0 && var1 <= this.count) {
  190.          int var3 = var2.length;
  191.          this.ensureCapacity(this.count + var3);
  192.          this.copyWhenShared();
  193.          System.arraycopy(this.value, var1, this.value, var1 + var3, this.count - var1);
  194.          System.arraycopy(var2, 0, this.value, var1, var3);
  195.          this.count += var3;
  196.          return this;
  197.       } else {
  198.          throw new StringIndexOutOfBoundsException();
  199.       }
  200.    }
  201.  
  202.    public StringBuffer insert(int var1, boolean var2) {
  203.       return this.insert(var1, String.valueOf(var2));
  204.    }
  205.  
  206.    public synchronized StringBuffer insert(int var1, char var2) {
  207.       this.ensureCapacity(this.count + 1);
  208.       this.copyWhenShared();
  209.       System.arraycopy(this.value, var1, this.value, var1 + 1, this.count - var1);
  210.       this.value[var1] = var2;
  211.       ++this.count;
  212.       return this;
  213.    }
  214.  
  215.    public StringBuffer insert(int var1, int var2) {
  216.       return this.insert(var1, String.valueOf(var2));
  217.    }
  218.  
  219.    public StringBuffer insert(int var1, long var2) {
  220.       return this.insert(var1, String.valueOf(var2));
  221.    }
  222.  
  223.    public StringBuffer insert(int var1, float var2) {
  224.       return this.insert(var1, String.valueOf(var2));
  225.    }
  226.  
  227.    public StringBuffer insert(int var1, double var2) {
  228.       return this.insert(var1, String.valueOf(var2));
  229.    }
  230.  
  231.    public synchronized StringBuffer reverse() {
  232.       this.copyWhenShared();
  233.       int var1 = this.count - 1;
  234.  
  235.       for(int var2 = var1 - 1 >> 1; var2 >= 0; --var2) {
  236.          char var3 = this.value[var2];
  237.          this.value[var2] = this.value[var1 - var2];
  238.          this.value[var1 - var2] = var3;
  239.       }
  240.  
  241.       return this;
  242.    }
  243.  
  244.    public String toString() {
  245.       return new String(this);
  246.    }
  247.  
  248.    final void setShared() {
  249.       this.shared = true;
  250.    }
  251.  
  252.    final char[] getValue() {
  253.       return this.value;
  254.    }
  255. }
  256.